package destiny.五行;

public enum 五行 {
	/**
	 * 木主仁，其性直，其情和。木盛的人长得丰姿秀丽，骨骼修长，手足细腻，日尖发美，面色清白。为人有博爱恻隐之心，慈祥恺悌之意，清高慷慨，质朴无伪。
	 * 木衰之人则个子瘦长，头发稀少，性格偏狭，嫉妒不仁。木气死绝之人则眉眼不正，项长喉结，肌肉干燥，为人鄙下吝啬。
	 * 
	 * 宜木者喜东方。可从事木材、木器、家具、装潢、木成品、纸业、种植业、养花业、育树苗、敬神物品、香料、植物性素食品等经营和事业。
	 */
	木,
	/**
	 * 火主礼，其性急，其情恭。火盛之人头小脚长，上尖下阔，浓眉小耳，精神闪烁，为人谦和恭敬，淳朴急躁。火衰之人则黄瘦尖楞，语言妄诞，诡诈妒毒，
	 * 做事有始无终。
	 * 
	 * 宜火者喜南方，可从事放光、照明、照光、光学、高热、液热、易烧易燃、油类、酒精类热炊食、食品、理发、化妆品、人身装饰品、文艺、文学、文具、文化学生、
	 * 文人、作家、写作、教员、校长、秘书、出版、公务、政界等方面的经营和事业。
	 */
	火,
	/**
	 * 土主信，其性重，其情厚。土盛的人圆腰阔鼻，眉清目秀，口才声重。为人忠孝至诚，肚量宽厚，言必信，行必果。土气太过则头脑僵化，愚拙不明，内向好静。
	 * 不及之人面色忧滞，面扁鼻低，为人狠毒乖戾，不讲信用，不讲情理。
	 * 
	 * 宜土者，喜中央之地，本地。可从事土产、地产、农村、畜牧兽类农人等类、布匹、服装、纺织、石、石灰、山地、水泥、建筑、房产买卖、挡水的雨衣、雨伞、雨帆
	 * 、筑提、容水物品、当铺、古董、中间人、律师、管理、买卖、设计、顾问、丧业、筑墓、墓地管理、僧尼等工作和经营。
	 */
	土,
	/**
	 * 金主义，其性刚，其情烈。金盛之人骨肉相称，面方白净，眉高眼深，体健神清。为人果断则毅，疏财仗义，深知廉耻。太过则有勇无谋，贪欲不仁。不及则身材瘦小
	 * ，为人刻薄，喜淫好杀，吝啬贪婪。
	 * 
	 * 宜金者，喜西方，可从事精纤材料或金属材料、坚硬、决断、武术、鉴定、清官、总管、汽车、交通、金融、工程、种子、开矿、民意代表、伐木、机械等行业和经营
	 * 。
	 */
	金,
	/**
	 * 水主智，其性聪，其情善。水旺之人面黑有彩，语言清和，为人深思熟虑，足智多谋，学识过人。太过则好说是非、飘荡贪淫。不及则人物短小，性情无常，胆小无略
	 * ，行事反复。
	 * 
	 * 宜水者，喜北方。可从事航海、冷温不燃液体、冰水、鱼类、水产、水利、水物、冷藏、冷冻、打捞、洁洗、扫除、流水、港内、泳池、湖池塘、浴池、冷食物买卖、
	 * 漂流、奔波、流动、连续性、易变化、属水性质、音响性质、清洁性质、冷温不燃性化学、海上作业、迁旅、特技表演、运动、导游、旅行、玩具、魔术、采访记者、
	 * 侦探、旅社、灭火器具、医药业、药物经营、医生、护士、占卜等经营和工作。
	 */
	水;

	private String[] 人事;
	private String[] 外貌;
	private String 方位;
	private String 职业;

	public String 盛者外貌() {
		return 外貌[0];
	}

	public String 衰者外貌() {
		return 外貌[1];
	}

	public String 盛者人事() {
		return 人事[0];
	}

	public String 过盛人事() {
		if (!"".equals(人事[1]))
			return String.format("%s但须注意%s", 人事[0], 人事[1]);
		return 人事[0];
	}

	public String 衰者人事() {
		return 人事[2];
	}

	public String 死绝人事() {
		if (人事.length > 3)
			return 人事[3];
		return 人事[2];
	}

	public String 方位() {
		return 方位;
	}

	public String 职业() {
		return 职业;
	}

	static {
		木.外貌 = new String[] { "丰姿秀丽，骨骼修长，手足细腻，日尖发美，面色清白。", "个子瘦长，头发稀少。" };
		木.人事 = new String[] { "为人有博爱恻隐之心，慈祥恺悌之意，清高慷慨，质朴无伪。", "", "性格偏狭，嫉妒不仁。",
				"眉眼不正，项长喉结，肌肉干燥，为人鄙下吝啬。" };
		木.方位 = "东";
		木.职业 = "可从事木材、木器、家具、装潢、木成品、纸业、种植业、养花业、育树苗、敬神物品、香料、植物性素食品等经营和事业。";

		火.外貌 = new String[] { "头小脚长，上尖下阔，浓眉小耳。", "黄瘦尖楞。" };
		火.人事 = new String[] { "精神闪烁，为人谦和恭敬，淳朴急躁。", "", "语言妄诞，诡诈妒毒，做事有始无终。" };
		火.方位 = "南";
		火.职业 = "放光、照明、照光、光学、高热、液热、易烧易燃、油类、酒精类热炊食、食品、理发、化妆品、人身装饰品、"
				+ "文艺、文学、文具、文化学生、文人、作家、写作、教员、校长、秘书、出版、公务、政界等方面的经营和事业。";

		土.外貌 = new String[] { "圆腰阔鼻，眉清目秀，口才声重。", "面色忧滞，面扁鼻低。" };
		土.人事 = new String[] { "为人忠孝至诚，肚量宽厚，言必信，行必果。", "头脑僵化，愚拙不明，内向好静。",
				"为人狠毒乖戾，不讲信用，不讲情理。" };
		土.方位 = "中央之地，本地";
		土.职业 = "土产、地产、农村、畜牧兽类农人等类、布匹、服装、纺织、石、石灰、山地、水泥、建筑、房产买卖、"
				+ "挡水的雨衣、雨伞、雨帆、筑提、容水物品、当铺、古董、中间人、律师、管理、买卖、设计、顾问、丧业、"
				+ "筑墓、墓地管理、僧尼等工作和经营。";

		金.外貌 = new String[] { "骨肉相称，面方白净，眉高眼深，体健神清。", "身材瘦小。" };
		金.人事 = new String[] { "为人果断则毅，疏财仗义，深知廉耻。", "有勇无谋，贪欲不仁。",
				"为人刻薄，喜淫好杀，吝啬贪婪。" };
		金.方位 = "西";
		金.职业 = "精纤材料或金属材料、坚硬、决断、武术、鉴定、清官、总管、汽车、交通、金融、工程、种子、开矿、"
				+ "民意代表、伐木、机械等行业和经营。";

		水.外貌 = new String[] { "面黑有彩。", "人物短小。" };
		水.人事 = new String[] { "语言清和，为人深思熟虑，足智多谋，学识过人。", "好说是非、飘荡贪淫。",
				"性情无常，胆小无略，行事反复。" };
		水.方位 = "北";
		水.职业 = "航海、冷温不燃液体、冰水、鱼类、水产、水利、水物、冷藏、冷冻、打捞、洁洗、扫除、流水、港内、"
				+ "泳池、湖池塘、浴池、冷食物买卖、漂流、奔波、流动、连续性、易变化、属水性质、音响性质、清洁性质、"
				+ "冷温不燃性化学、海上作业、迁旅、特技表演、运动、导游、旅行、玩具、魔术、采访记者、侦探、旅社、"
				+ "灭火器具、医药业、药物经营、医生、护士、占卜等经营和工作。";
	}

	public static 五行 getElement(int id) {
		switch (id) {
		case 1:
			return 木;
		case 2:
			return 火;
		case 3:
			return 土;
		case 4:
			return 金;
		case 5:
			return 水;
		}
		return null;
	}

	public 五行 生() {
		if (五行.土.equals(this))
			return 五行.金;
		if (五行.金.equals(this))
			return 五行.水;
		if (五行.水.equals(this))
			return 五行.木;
		if (五行.木.equals(this))
			return 五行.火;
		if (五行.火.equals(this))
			return 五行.土;

		return null;
	}

	public 五行 克() {
		if (五行.土.equals(this))
			return 五行.水;
		if (五行.水.equals(this))
			return 五行.火;
		if (五行.火.equals(this))
			return 五行.金;
		if (五行.金.equals(this))
			return 五行.木;
		if (五行.木.equals(this))
			return 五行.土;

		return null;
	}

	public 五行 印() {
		if (五行.土.equals(this))
			return 五行.火;
		if (五行.金.equals(this))
			return 五行.土;
		if (五行.水.equals(this))
			return 五行.金;
		if (五行.木.equals(this))
			return 五行.水;
		if (五行.火.equals(this))
			return 五行.木;

		return null;
	}

	public 五行 官() {
		if (五行.土.equals(this))
			return 五行.木;
		if (五行.水.equals(this))
			return 五行.土;
		if (五行.火.equals(this))
			return 五行.水;
		if (五行.金.equals(this))
			return 五行.火;
		if (五行.木.equals(this))
			return 五行.金;

		return null;
	}

	public 五行生克关系 关系(五行 target) {
		if (this.equals(target))
			return 五行生克关系.比肩;
		if (生().equals(target))
			return 五行生克关系.食神;
		if (target.生().equals(this))
			return 五行生克关系.印绶;
		if (克().equals(target))
			return 五行生克关系.妻财;
		if (target.克().equals(this))
			return 五行生克关系.官杀;

		return null;
	}
}
